//
//
//class Solution {
//    int preIndex = 0;
//
//    public TreeNode buildTree(int[] preorder, int[] inorder) {
//        return buildTree(preorder, inorder, 0, inorder.length - 1);
//    }
//
//    public TreeNode buildTree(int[] preorder, int[] inorder, int left, int right) {
//        if (left > right) return null;
//        int rootIndex = findRootIndex(inorder, 0, inorder.length - 1, preorder[preIndex]);
//        TreeNode root = new TreeNode(preorder[preIndex]);
//        preIndex++;
//        if (rootIndex == -1) return null;
//
//        root.left = buildTree(preorder, inorder, left, rootIndex - 1);
//        root.right = buildTree(preorder, inorder, rootIndex + 1, right);
//        return root;
//    }
//
//    public int findRootIndex(int[] inorder, int left, int right, int target) {
//        for (int i = left; i <= right; i++) {
//            if (inorder[i] == target) {
//                return i;
//            }
//        }
//        return -1;
//    }
//}